﻿#include "JZWebLayout.h"
#include "JZWebWidget.h"

//JZWebLayoutItem
JZWebLayoutItem::JZWebLayoutItem()
{
	layout = nullptr;
	widget = nullptr;
}

//JZWebLayout
JZWebLayout::JZWebLayout()
{
}

JZWebLayout::~JZWebLayout()
{
}

void JZWebLayout::addWidget(JZWebWidget* w)
{
	w->setParent(this);

	JZWebLayoutItem item;
	item.widget = w;
	m_items.push_back(item);
}

void JZWebLayout::addItem(JZWebLayout* l)
{
	l->setParent(this);

	JZWebLayoutItem item;
	item.layout = l;
	m_items.push_back(item);
}

QDomElement JZWebLayout::render(QDomDocument& doc)
{
	QDomElement div = doc.createElement("div");
	QList<QDomElement> ele_list;
	for (int i = 0; i < m_items.size(); i++)
	{
		auto& item = m_items[i];
		if (item.layout)
		{
			ele_list << item.layout->render(doc);
		}
		else if(item.widget)
		{
			auto sub_ele = item.widget->render(doc);
			sub_ele.setAttribute("id", item.widget->id());
			ele_list << sub_ele;
		}
	}

	for (int i = 0; i < ele_list.size(); i++)
		div.appendChild(ele_list[i]);

	applyLayout(div,ele_list);
	return div;
}

//JZWebHBoxLayout
JZWebHBoxLayout::JZWebHBoxLayout()
{
}

JZWebHBoxLayout::~JZWebHBoxLayout()
{
}

void JZWebHBoxLayout::applyLayout(QDomElement& layout, QList<QDomElement>& item_list)
{
	layout.setAttribute("class", "hbox-layout");
}

//JZWebVBoxLayout
JZWebVBoxLayout::JZWebVBoxLayout()
{
}

JZWebVBoxLayout::~JZWebVBoxLayout()
{
}

void JZWebVBoxLayout::applyLayout(QDomElement& layout, QList<QDomElement>& item_list)
{
	layout.setAttribute("class", "vbox-layout");
}

//JZWebGridLayout
JZWebGridLayout::JZWebGridLayout()
{
}

JZWebGridLayout::~JZWebGridLayout()
{
}

void JZWebGridLayout::applyLayout(QDomElement& layout, QList<QDomElement>& item_list)
{
	layout.setAttribute("class", "grid-layout");
}